using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;

namespace AWS.SLAM.Hierarchy
{
	/// <summary>
	/// This class handles events raised during feature activation, deactivation, installation, uninstallation, and upgrade.
	/// </summary>
	/// <remarks>
	/// The GUID attached to this class may be used during packaging and should not be modified.
	/// </remarks>

	[Guid("a1b3c441-24b0-49b2-8155-c7d8cc880e10")]
	public class SLAM_HierarchyEventReceiver : SPFeatureReceiver
	{
		// Uncomment the method below to handle the event raised after a feature has been activated.

		public override void FeatureActivated(SPFeatureReceiverProperties properties)
		{
			if (!InstallationValidator.VerifySlamIsInstalled())
			{
				throw new Exception("SharePoint List Association Manager (SLAM) is required to use this feature.  SLAM does not appear to be installed.  Please download SLAM from CodePlex at http://slam.codeplex.com/ then install and set it up prior to attempting to activate this feature again.", null);
			}

			if (!InstallationValidator.VerifySlamIsActivated())
			{
				InstallationValidator.ActivateSlamFeature();
			}
		}


		// Uncomment the method below to handle the event raised before a feature is deactivated.

		//public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
		//{
		//}


		// Uncomment the method below to handle the event raised after a feature has been installed.

		//public override void FeatureInstalled(SPFeatureReceiverProperties properties)
		//{
		//}


		// Uncomment the method below to handle the event raised before a feature is uninstalled.

		//public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
		//{
		//}

		// Uncomment the method below to handle the event raised when a feature is upgrading.

		//public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters)
		//{
		//}
	}
}
